
 1000  *---------------------------------
 1010  *      PROGRAM TO INPUT AN INTEGER FROM
 1020  *      0-65535, AND PUT IT IN $50,51
 1030  *
 1040  *      BY PETER MEYER, 10/24/81
 1050  *      MAY BE FREELY USED WITH ACKNOWLEDGEMENT
 1060  *---------------------------------
 1070  *      CALL:   JSR GET.INTEGER.INTO.LINNUM
 1080  *    RETURN:   INTEGER VALUE IN LINNUM ($50,51)
 1090  *              AND CARRY CLEAR,
 1100  *              OR CARRY SET IF VALUE NEGATIVE
 1110  *                   OR TOO LARGE, OR HAS A
 1120  *                   LETTER IN IT.
 1130  *---------------------------------
 1140  LINNUM .EQ $50,51
 1150  FACEXP .EQ $9D
 1160  FACMO  .EQ $A0
 1170  FACLO  .EQ $A1
 1180  FACSGN .EQ $A2
 1190  TXTPTR .EQ $B8,B9
 1200  BUFFER .EQ $200
 1210  *---------------------------------
 1220  CHRGOT .EQ $B7
 1230  GDBUFS .EQ $D539
 1240  QINT   .EQ $EBF2
 1250  FIN    .EQ $EC4A
 1260  NXTCHR .EQ $FD75
 1270  *---------------------------------
 1280         .OR $300     (BUT MAY BE LOADED ANYWHERE)
 1290  *---------------------------------
 1300  GET.INTEGER.INTO.LINNUM
 1310         LDX #0
 1320         JSR NXTCHR
 1330         TXA          CHECK FOR NULL ENTRY
 1340         BEQ .2       NULL
 1350  *---------------------------------
 1360  *   CHECK FOR ALPHA INPUT
 1370  *   AND ALSO WEED OUT ENTRIES SUCH AS
 1380  *   "1E99" AND "99999...." WHICH WOULD
 1390  *   CAUSE OVERFLOW.
 1400  *---------------------------------
 1410         PHA          SAVE LENGTH
 1420         JSR GDBUFS
 1430         PLA          RETRIEVE LENGTH
 1440         CMP #36
 1450         BCS .2
 1460         TAX
 1470         DEX
 1480  .1     LDA BUFFER,X
 1490         CMP #'A
 1500         BCS .2
 1510         DEX
 1520         BPL .1
 1530  *   GET NUMBER INTO FAC
 1540         LDA #BUFFER
 1550         LDY /BUFFER
 1560         STA TXTPTR
 1570         STY TXTPTR+1
 1580         JSR CHRGOT
 1590         JSR FIN
 1595         .PG
 1600  *---------------------------------
 1610  *   CHECK IF NUMBER IS NEGATIVE
 1620  *---------------------------------
 1630         LDA FACSGN
 1640         BPL .3
 1650  .2     SEC          NUMBER IS TOO LARGE, NEGATIVE
 1660         RTS          OR HAS A LETTER IN IT.
 1670  *---------------------------------
 1680  *   CHECK IF NUMBER IS TOO LARGE
 1690  *---------------------------------
 1700  .3     LDA FACEXP
 1710         CMP #$91
 1720         BCS .4       TOO LARGE
 1730  *---------------------------------
 1740  *   PLACE IN LINNUM
 1750  *---------------------------------
 1760         JSR QINT     CONVERT TO INTEGER
 1770         LDA FACLO
 1780         LDY FACMO
 1790         STA LINNUM
 1800         STY LINNUM+1
 1810         CLC          SIGNAL GOOD VALUE
 1820  .4     RTS

